package cc.comac.saic.hkhy.jsrj.gj.inttools.mapper;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import cc.comac.saic.hkhy.jsrj.gj.common.mybatis.core.mapper.BaseMapperPlus;
import cc.comac.saic.hkhy.jsrj.gj.inttools.pojo.entity.IntToolDataInfo;
import cc.comac.saic.hkhy.jsrj.gj.inttools.pojo.vo.IntToolDataInfoSearchVo;
import com.baomidou.mybatisplus.core.metadata.IPage;

/**
 * 工具链数据信息(IntToolDataInfo)表数据库访问层
 *
 * @author makejava
 * @since 2025-11-18 17:13:00
 */
public interface IntToolDataInfoMapper extends BaseMapperPlus<IntToolDataInfo, IntToolDataInfo> {

    IntToolDataInfo queryByKeyAndType(@Param("code") String key, @Param("type") String type);

    /**
     * 按条件查询指定数据
     * 若同一file有多个版本version，仅查询最新版本version的数据
     * <p>
     * 实体关系:
     * file_info : file_version = 1 : N
     * file_version : int_tool_data_info = N : N
     * 一个文件版本可以关联多个工具数据
     * 一个工具数据可以关联多个文件版本
     * <p>
     * 示例：
     * file1 有 version1 和 version2
     * version1 关联 int_tool_data_info1 和 int_tool_data_info2
     * version2 关联 int_tool_data_info2
     * 期望结果：只显示 int_tool_data_info2（因为它是file1最新版本关联的数据）
     *
     * @param intToolDataInfoSearchVo 查询条件
     * @return 对象列表
     */
    List<IntToolDataInfo> queryNewestByCondition(IntToolDataInfoSearchVo intToolDataInfoSearchVo);

    IPage<IntToolDataInfo> pageByCondition(IPage<IntToolDataInfoSearchVo> page, @Param("vo") IntToolDataInfoSearchVo intToolDataInfoSearchVo);
}

